package com.sz.biz.csr.service;

import com.sz.biz.csr.entity.CsrWorkOrderSchema;
import com.sz.biz.csr.dto.CsrWorkOrderSchemaSaveDto;
import com.sz.biz.logistics.ord.entity.OrdOrder;
import com.sz.common.base.dto.QResultDto;

import java.util.Date;
import java.util.List;

/**
 * Created by xutao on 17/5/18.
 */
public interface CsrWorkOrderSchemaService {

    /**
     * 创建工单
     */
    int save(CsrWorkOrderSchemaSaveDto entry);

    /**
     * 修改工单
     */
    void update(CsrWorkOrderSchema csrWorkOrderSchema);

    /**
     * 获取工单类型
     */
    QResultDto getWorkOrderTypeList();

    /**
     *
     *
     */
    int changeWorkOrderStatus(Integer id, Integer status);

    /**
     * 查询工单概要信息列表
     */
    QResultDto findWorkOrderList(int pageIndex, int pageSize, String sortName, boolean isAsc,
                                 String workOrderCode, int creator, int customerUserId, Date beginTime,
                                 Date endTime, String title, int status, String customerName, boolean isBlockOrder);

    /**
     * 凭借ID查找对应的工单详细信息报货审批记录
     */
    QResultDto findDetailInfoById(Integer id);

    /**
     * 删除工单
     */
    void batchDelete(List<Integer> ids);

    /**
     *
     * 检查工单是否关联了对应的订单或问题单
     *
     * type: 1:留言 2：订单
     *
     * oddNumber：单号
     *
     */
    Boolean isContainOddNumber(int type, String oddNumber);

    /**
     *
     * 获取工单匿名用户列表
     */
    /**
     * 获取username列表
     *
     * @param
     * @param
     */
    QResultDto getCustomerList(String q, int pageIndex, int pageSize, String sortName,
                               boolean isAsc, String language);

    List<CsrWorkOrderSchema> queryByOrderNo(String orderNo);
    /**
     * 查询订单的未完成的阻塞性工单
     *
     * @param orderNo 订单号
     * @return 未完成的阻塞性工单集合
     */
     List<CsrWorkOrderSchema> queryBlockByOrderNo(String orderNo);

    /**
     * 判断是否有阻塞性工单，true：有阻塞性工单。false：无阻塞性工单
     * @param orderNo 订单号
     * @return true：有阻塞性工单。false：无阻塞性工单
     */
     boolean isBlockByOrderNo(String orderNo);

     CsrWorkOrderSchema findById(int id);

    /**
     * 从订单创建工单
     */
    void saveCsrWorkOrderSchemaByOrd(OrdOrder ordOrder, String title, String content, int type);
}
